// samsting : this file is auto create.

#ifndef ALIYUN_Ecs_DescribeImagesResponse_H_
#define ALIYUN_Ecs_DescribeImagesResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Ecs {

class DescribeImagesResponse : public AcsResponse {
public:
  DescribeImagesResponse();

  class Image {
    friend class DescribeImagesResponse;
  public:

    class DiskDeviceMapping {
      friend class DescribeImagesResponse;
      friend class Image;
    public:
      const string& GetSnapshotId(void) const;
      const string& GetSize(void) const;
      const string& GetDevice(void) const;
    private:
      string SnapshotId_;
      string Size_;
      string Device_;
    }; // DiskDeviceMapping 


    class Tag {
      friend class DescribeImagesResponse;
      friend class Image;
    public:
      const string& GetTagKey(void) const;
      const string& GetTagValue(void) const;
    private:
      string TagKey_;
      string TagValue_;
    }; // Tag 

    const std::vector<DiskDeviceMapping>& GetDiskDeviceMappings(void) const;
    const std::vector<Tag>& GetTags(void) const;
    const string& GetProgress(void) const;
    const string& GetImageId(void) const;
    const string& GetImageName(void) const;
    const string& GetImageVersion(void) const;
    const string& GetDescription(void) const;
    int  GetSize(void) const;
    const string& GetImageOwnerAlias(void) const;
    const string& GetOSName(void) const;
    const string& GetArchitecture(void) const;
    const string& GetStatus(void) const;
    const string& GetProductCode(void) const;
    bool GetIsSubscribed(void) const;
    const string& GetCreationTime(void) const;
    const string& GetIsSelfShared(void) const;
    const string& GetOSType(void) const;
    const string& GetPlatform(void) const;
    const string& GetUsage(void) const;
    bool GetIsCopied(void) const;
  private:
    std::vector<DiskDeviceMapping> DiskDeviceMappings_;
    std::vector<Tag> Tags_;
    string Progress_;
    string ImageId_;
    string ImageName_;
    string ImageVersion_;
    string Description_;
    int    Size_;
    string ImageOwnerAlias_;
    string OSName_;
    string Architecture_;
    string Status_;
    string ProductCode_;
    bool   IsSubscribed_;
    string CreationTime_;
    string IsSelfShared_;
    string OSType_;
    string Platform_;
    string Usage_;
    bool   IsCopied_;
  }; // Image 

  const std::vector<Image>& GetImages(void) const;
  const string& GetRegionId(void) const;
  int  GetTotalCount(void) const;
  int  GetPageNumber(void) const;
  int  GetPageSize(void) const;

private:
  std::vector<Image> Images_;
  string RegionId_;
  int    TotalCount_;
  int    PageNumber_;
  int    PageSize_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Ecs {

#endif // #ifndef ALIYUN_Ecs_DescribeImagesResponse_H_

// end of file 
